package com.sugar.base.util;

import java.util.Map;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertyFilter;

public class ConverterJSON {
	/**
	 * 异常JSONException:There is a cycle in the hierarchy! 异常原因是:
	 * 在解析bean时，出现死循环调用。 解决的办法，过滤去掉bean中引起死循环调用的属性
	 * 由于一对多的查询，会报递归异常，因此需要将那些递归的属性进行过滤
	 * 
	 * @param property 过滤的属性
	 * @return
	 */
	public static JsonConfig filterBean(final String property) {
		JsonConfig config = new JsonConfig();
		config.setJsonPropertyFilter(new PropertyFilter() {
			public boolean apply(Object source, String name, Object value) {

				// 配置你可能出现递归的属性
				if (name.equals(property)) {
					return true;
				} else {
					return false;
				}
			}
		});
		return config;
	}

	public static JSONObject generate(Map<Object, Object> map, JsonConfig config) {

		return JSONObject.fromObject(map, config);
	}

	public static JSONObject generate(Map<Object, Object> map) {

		return JSONObject.fromObject(map);
	}
}
